def read_gguf_file(gguf_file_path):
    from gguf_connector.reader import GGUFReader
    reader = GGUFReader(gguf_file_path)
    print('-' * 105)
    print('Key-Value Pairs:')
    max_key_length = max(len(key) for key in reader.fields.keys())
    for key, field in reader.fields.items():
        value = field.parts[field.data[0]]
        print(f'{key:{max_key_length}} : {value}')
    print('-' * 105)
    print('Tensors:')
    tensor_info_format = (
        '{:<30} | Shape: {:<15} | Size: {:<12} | Quantization: {}')
    print(tensor_info_format.format('Tensor Name', 'Shape', 'Size',
        'Quantization'))
    print('-' * 105)
    for tensor in reader.tensors:
        shape_str = 'x'.join(map(str, tensor.shape))
        size_str = str(tensor.n_elements)
        quantization_str = tensor.tensor_type.name
        print(tensor_info_format.format(tensor.name, shape_str, size_str,
            quantization_str))
import os
gguf_files = [file for file in os.listdir() if file.endswith('.gguf')]
if gguf_files:
    print('GGUF file(s) available. Select which one to read:')
    for index, file_name in enumerate(gguf_files, start=1):
        print(f'{index}. {file_name}')
    choice = input(f'Enter your choice (1 to {len(gguf_files)}): ')
    try:
        choice_index = int(choice) - 1
        selected_file = gguf_files[choice_index]
        print(f'Model file: {selected_file} is selected!')
        ModelPath = selected_file
        from rich.progress import Progress
        with Progress(transient=True) as progress:
            task = progress.add_task('Processing', total=None)
            read_gguf_file(ModelPath)
    except (ValueError, IndexError):
        print('Invalid choice. Please enter a valid number.')
else:
    print('No GGUF files are available in the current directory.')
    input('--- Press ENTER To Exit ---')